package com.util;

import javassist.bytecode.stackmap.TypeData;

import java.io.File;
import java.io.IOException;
import java.net.URISyntaxException;
import java.net.URL;
import java.net.URLDecoder;
import java.security.CodeSource;
import java.security.ProtectionDomain;

public class Test {
  public static void main(String[] args) throws IOException, URISyntaxException {
/** * 方法二：获取当前可执行jar包所在目录 */
    String filePath  ="";
    URL url = Test.class.getProtectionDomain().getCodeSource().getLocation();
    try {
      filePath = URLDecoder.decode(url.getPath(), "utf-8");// 转化为utf-8编码，支持中文
    } catch (Exception e) {
      e.printStackTrace();
    }
    if (filePath.endsWith(".jar")) {
      // 可执行jar包运行的结果里包含".jar"
      // 获取jar包所在目录
      filePath = filePath.substring(0, filePath.lastIndexOf("/") + 1);
    }
    File file = new File(filePath);
    filePath = file.getAbsolutePath();//得到windows下的正确路径
    System.out.println("jar包所在目录："+filePath);

     // 步骤1: 获取当前类的Class对象
//    Class<?> clazz = Test.class;
//    // 步骤2: 获取类的ProtectionDomain对象
//    ProtectionDomain domain = clazz.getProtectionDomain();
//    // 步骤3: 从ProtectionDomain对象中获取CodeSource对象
//    CodeSource source = domain.getCodeSource();
//    // 步骤4: 从CodeSource对象中获取Jar包的URL
//    URL url = source.getLocation();
//    // 步骤5: 从Jar包的URL中获取Jar包文件路径
//    String path = url.toURI().getPath();
//    System.out.println("当前Jar包路径：" + path);
//    GetSapConnRk conn = new GetSapConnRk();
//    System.out.print("");
//    conn.startSyTask();
  }
}
